#include "Inf_BTS7020.h"

static GPIOConfig gpioConfigList[] = {
    [BTS7020_GPIO_INDEX_VALVE_EN]     = { GPIOA,
                                          { FL_GPIO_PIN_6, FL_GPIO_MODE_OUTPUT, FL_GPIO_OUTPUT_PUSHPULL,
                                            FL_DISABLE, FL_DISABLE, FL_DISABLE } },
    [BTS7020_GPIO_INDEX_PUMP_PULS_EN] = { GPIOA,
                                          { FL_GPIO_PIN_15, FL_GPIO_MODE_OUTPUT, FL_GPIO_OUTPUT_PUSHPULL,
                                            FL_DISABLE, FL_DISABLE, FL_DISABLE } },
};

/**
 * @brief 初始化 BTS7020 GPIO
 *
 */
void Inf_BTS7020_Init(void)
{
    for (uint8_t i = 0; i < BTS7020_GPIO_INDEX_MAX; ++i) {
        FL_GPIO_Init(gpioConfigList[i].port, &(gpioConfigList[i].gpioInit));
        /* 默认拉低GPIO */
        FL_GPIO_ResetOutputPin(gpioConfigList[i].port, gpioConfigList[i].gpioInit.pin);
    }
}

/**
 * @brief 使能VALVE_EN
 *
 */
void Inf_BTS7020_EnableValveEN(void)
{
    FL_GPIO_SetOutputPin(gpioConfigList[BTS7020_GPIO_INDEX_VALVE_EN].port,
                         gpioConfigList[BTS7020_GPIO_INDEX_VALVE_EN].gpioInit.pin);
}

/**
 * @brief 失能VALVE_EN
 *
 */
void Inf_BTS5090_DisableValveEN(void)
{
    FL_GPIO_ResetOutputPin(gpioConfigList[BTS7020_GPIO_INDEX_VALVE_EN].port,
                           gpioConfigList[BTS7020_GPIO_INDEX_VALVE_EN].gpioInit.pin);
}

/**
 * @brief 使能PUMP_PULS_EN
 *
 */
void Inf_BTS7020_EnablePumpPulsEN(void)
{
    FL_GPIO_SetOutputPin(gpioConfigList[BTS7020_GPIO_INDEX_PUMP_PULS_EN].port,
                         gpioConfigList[BTS7020_GPIO_INDEX_PUMP_PULS_EN].gpioInit.pin);
}

/**
 * @brief 失能PUMP_PULS_EN
 *
 */
void Inf_BTS5090_DisablePumpPulsEN(void)
{
    FL_GPIO_ResetOutputPin(gpioConfigList[BTS7020_GPIO_INDEX_PUMP_PULS_EN].port,
                           gpioConfigList[BTS7020_GPIO_INDEX_PUMP_PULS_EN].gpioInit.pin);
}
